이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요

(틀:폐기됨)
이 기능은 지금 사라진 기능입니다.
구현이 취소되었거나 있었다가 없어졌습니다

목차
1. 개요
2. 문제점
2.1. 생각해보니
2.1.1. 이 때문에 생긴 문제
3. 결론

1. 개요 ✎

파이썬에는 멀티스레드와 멀티프로세스를 지원하긴 하지만 멀티스레드의 경우 GIL 문제로 인해서 싱글스레드를 쓰는 것과 거의 다름이 없다...(1)

그래서 이를 멀티프로세싱을 이용해서 극복하고자 하는 프로젝트이다.

2. 문제점 ✎

일단 코드를 전부 병렬로 동작해도 문제 없도록 만들어야한다. 한 마디로 디비가 연관된 부분은 다 엎어야한다. 일단 엎기만 하면 SQLite는 스레드 안전하니까 문제... 없겠지? 일단 라우터 부분은 해결되었고 func.py를 해결해야 하는데... 쉽지 않을 것 같다... 언제 다 하지

2.1. 생각해보니 ✎

그냥 func.py에 커넥션 넘겨주는 게 아니라 func.py 함수마다 커넥션 새로 열게하면 되겠네라는 이상한 발상으로 적용했다. 이제 병렬스레드 동작까진 되었으니 (물론 GIL 때문에 속도가 안 나온다) 멀티프로세스를 적용할 방안만 고민해보면 될 것 같은데... 흠... 걍 진짜 Go로 짤까

2.1.1. 이 때문에 생긴 문제 ✎

안 그래도 커넥션 여는 속도가 빠르지 않은데 이러면 함수 쓸 때마다 커넥션 계속 여니 느리다(...) 아무래도 func.py를 갈아엎는 게 맞는 것 같긴 한데...

이건 오픈테섭 서버의 IO 성능이 너무 느려서 생긴 문제였던 것 같다 MySQL로 이전한 후 속도가 매우 빨라졌다 문제 해결

3. 결론 ✎

멀티프로세스를 uvloop등으로 적용하려고 시작한 방식이였으나 그냥 그럴빠엔 Golang으로 고부하 부분을 재작성하는 게 더 빠르고 효율적이겠다 싶어서 다른 프로젝트로 이관되었다
(1) 스레드 전환 때문에 오히려 더 느릴 때도 있다.

분류 : (+)

관련 문서





(돌아가기)
(임시 저장) (임시 저장 불러오기)


(틀) (링크) (중괄호) (표) (추가)



비로그인 상태입니다. 편집 시 지금 접속한 IP가 기록됩니다.